/*
 * ESTA CLASE SOLO CONTIENE LA DIRECCION DONDE DIRECCIONA AL USUARIO UNA VES SE REGISTRO EN EL SISTEMA.
 * ADEMAS ENCAPSULO LOS USUARIOS POR SEGURIDAD
 * and open the template in the editor.
 */
package beans;

import dao.UsuarioDao;
import dao.UsuarioDaoImpl;
import java.awt.event.ActionEvent;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.servlet.http.HttpSession;
import model.Usuario;
import org.primefaces.context.RequestContext;
import util.MyUtil;

/**
 *
 * @author Manuel
 */
@Named(value="loginBean")
@SessionScoped
public class loginBean implements Serializable{
    /**
     * declaro los variables de tipo usuario y usuarioDao
     */
    
    private Usuario usuario;
    private UsuarioDao usuarioDao;
    
    public loginBean() {
        this.usuarioDao = new UsuarioDaoImpl();
        if (this.usuario == null){
            this.usuario = new Usuario();
        }
    }

    public Usuario getUsuario() {
         return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public void login(ActionEvent actionEvent) {
        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage msg;
        boolean loggedIn;
        /* creo esta variable que es la ruta a la que ingresa el usuario si es valido */
        String ruta = "";
            
        this.usuario = this.usuarioDao.login(this.usuario);
        if (this.usuario != null) {
            loggedIn = true;
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("usuario", this.usuario.getUsuario());
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido", this.usuario.getUsuario());
            /*he creado un metodo en la clase MyUtil*/
            ruta = MyUtil.basepathlogin()+"vistas/inicio.xhtml";
        } 
            else {
            loggedIn = false;
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Error de Acceso", "Usuario y/o Clave incorrecta");
                        if (this.usuario == null){
                             this.usuario = new Usuario();
                        }
        }

        FacesContext.getCurrentInstance().addMessage(null, msg);
        context.addCallbackParam("loggedIn", loggedIn);
        context.addCallbackParam("ruta", ruta);
    }

    /* ESTE METODO LO CREO PARA ELIMINAR LA SESION */
    public void loguot (){
        String ruta = MyUtil.basepathlogin() + "index.xhtml";
        RequestContext context = RequestContext.getCurrentInstance();
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpSession sesion = (HttpSession) facesContext.getExternalContext().getSession(false);
        /* con el metodo invalidate elimino la sesion */
        sesion.invalidate();
        
        context.addCallbackParam("loggetOut", true);
        context.addCallbackParam("ruta", ruta);
    }
}
